package com.raul.biblioteca.servlets;

import java.util.Iterator;
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.orm.PersistentException;
import org.orm.PersistentTransaction;

import com.raul.biblioteca.servlets.vo.VOLogin;

/**
 * Servlet implementation class UsuariosServlet
 */
@WebServlet("/usuarios/adminUsuarios.servlet")
public class UsuariosServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public UsuariosServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String accion = request.getParameter("accion");
		System.out.println("Accion : "+accion);
		List<VOLogin> lista = (List<VOLogin>)request.getSession().getAttribute("listaUsuario");
		VOLogin vo = new VOLogin();
		vo.setUsuario(request.getParameter("usuario"));
		vo.setPassword(request.getParameter("password"));
		vo.setEdad(Integer.parseInt(request.getParameter("edad")));
		vo.setNombre(request.getParameter("nombre"));
		if(accion.equals("guardar")) {
			lista.add(vo);
			PersistentTransaction t;
			try {
				t = orm.BibliotecaPersistentManager.instance().getSession().beginTransaction();
				try {
				orm.Usuario lormUsuario = orm.UsuarioDAO.createUsuario();
				// Initialize the properties of the persistent object here
				lormUsuario.setUsuario(vo.getUsuario());
				lormUsuario.setPassword(vo.getPassword());
				lormUsuario.setEdad(vo.getEdad());
				lormUsuario.setNombre(vo.getNombre());
				System.out.println("Ingreso Exitoso");
				orm.UsuarioDAO.save(lormUsuario);
				t.commit();
				}
				catch (Exception e) {
				t.rollback();
				}
				} catch (PersistentException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
				}
		} else if(accion.equals("actualizar")) {
			for(VOLogin obj: lista) {
				if(obj.getUsuario().equals(vo.getUsuario())) {
					obj.setPassword(vo.getPassword());
					obj.setEdad(vo.getEdad());
					obj.setNombre(vo.getNombre());
				}
				PersistentTransaction t;
				try {
					t = orm.BibliotecaPersistentManager.instance().getSession().beginTransaction();
					try {
						orm.Usuario lormUsuario = orm.UsuarioDAO.loadUsuarioByQuery("usuario='"+vo.getUsuario()+"'", null);
					System.out.println("Borrado Exitoso");
					if(lormUsuario!=null){
						lormUsuario.setPassword(vo.getPassword());
						lormUsuario.setEdad(vo.getEdad());
						lormUsuario.setNombre(vo.getNombre());
						orm.UsuarioDAO.save(lormUsuario);
						t.commit();
						}
					else {
						System.out.println("No Encontrado");
					}
					}
					catch (Exception e) {
					t.rollback();
					}
					} catch (PersistentException e1) {
					// TODO Auto-generated catch block.
					e1.printStackTrace();
					}
			}
		} else if(accion.equals("borrar")) {
			for(VOLogin obj: lista) {
				if(obj.getNombre().equals(vo.getNombre())) {
					lista.remove(obj);
					break;
				}				
			}
			PersistentTransaction t;
			try {
				t = orm.BibliotecaPersistentManager.instance().getSession().beginTransaction();
				try {
					orm.Usuario lormUsuario = orm.UsuarioDAO.loadUsuarioByQuery("usuario='"+vo.getUsuario()+"'", null);
				System.out.println("Borrado Exitoso");
				if(lormUsuario!=null){
					orm.UsuarioDAO.delete(lormUsuario);
					t.commit();
					}
				else {
					System.out.println("No Encontrado");
				}
				}
				catch (Exception e) {
				t.rollback();
				}
				} catch (PersistentException e1) {
				// TODO Auto-generated catch block.
				e1.printStackTrace();
				}
		}
		response.sendRedirect("usuarios.jsp");
	}
}
